package com.twb.core.config;

import java.io.Serializable;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @ClassName TwbConfigProperties
 * @Description 核心配置
 * @author DSY
 * @date 2020年1月22日 下午1:20:33
 */
@Component("twbConfigProperties")
@ConfigurationProperties(prefix = "twb")
public class TwbConfigProperties implements Serializable {

	private static final long serialVersionUID = 1L;

	private String appName;

	private String appTitle;

	private String dbType;

	/**
	 * 开发者账号名称
	 */
	private String developerName;
	
	/**
	 * 单用户模式
	 */
	private Boolean singleUser;
	
	/**
	 * 授权秘钥
	 */
	private String authSecret;
	
	@Value("${spring.profiles.active:default}")
	private String env;

	/**
	 *缓存前缀
	 */
	private String cachePrefix;
	
	public String getAppName() {
		return appName;
	}

	public void setAppName(String appName) {
		this.appName = appName;
	}

	public String getAppTitle() {
		return appTitle;
	}

	public void setAppTitle(String appTitle) {
		this.appTitle = appTitle;
	}

	public String getDbType() {
		return dbType;
	}

	public void setDbType(String dbType) {
		this.dbType = dbType;
	}

	public String getDeveloperName() {
		return developerName;
	}

	public void setDeveloperName(String developerName) {
		this.developerName = developerName;
	}

	public Boolean getSingleUser() {
		return singleUser;
	}

	public void setSingleUser(Boolean singleUser) {
		this.singleUser = singleUser;
	}

	public String getAuthSecret() {
		return authSecret;
	}

	public void setAuthSecret(String authSecret) {
		this.authSecret = authSecret;
	}

	public String getEnv() {
		return env;
	}

	public void setEnv(String env) {
		this.env = env;
	}

	public String getCachePrefix() {
		if(StringUtils.isBlank(cachePrefix)) {
			this.cachePrefix = appName + ":" +env;
		}
		return cachePrefix;
	}

	public void setCachePrefix(String cachePrefix) {
		this.cachePrefix = cachePrefix;
	}

	/**
	 * @Title  getLoginRedisKey
	 * @Class: TwbConfigProperties.java
	 * @Description 获取项目的redis缓存前缀
	 * @param key
	 * @return
	 * @author DSY
	 * @date 2020年1月22日 下午2:05:08
	 */
	public String getLoginRedisKey(String key) {
		if (!StringUtils.isEmpty(appName)) {
			return getCachePrefix()+":login:" + key;
		}
		return key;
	}

	/**
	 * @Title getTwbLoginRedisKey
	 * @Description 获取登录用户详细信息的key
	 * @param key
	 * @return
	 * @AuthorOriginally DSY
	 * @date 2022年7月25日 下午9:37:53
	 */
	public String getTwbLoginRedisKey(String key) {
		if (!StringUtils.isEmpty(appName)) {
			return getCachePrefix()+":TwbLogin:" + key;
		}
		return key;
	}
	
	/**
	 * @Title getLoginApiRedisKey
	 * @Description 获取登录用户的api的redis缓存前缀
	 * @param key
	 * @return
	 * @AuthorOriginally DSY
	 * @date 2022年3月29日 下午4:29:43
	 */
	public String getLoginApiRedisKey(String key) {
		if (!StringUtils.isEmpty(appName)) {
			return getCachePrefix()+":api:" + key;
		}
		return key;
	}
	
	/**
	 * @Title getLoginDataScopeRedisKey
	 * @Description 数据权限数据key
	 * @param key
	 * @return
	 * @AuthorOriginally DSY
	 * @date 2022年7月25日 下午9:42:52
	 */
	public String getLoginDataScopeRedisKey(String key) {
		if (!StringUtils.isEmpty(appName)) {
			return getCachePrefix()+":dataScope:" + key;
		}
		return key;
	}
	
	/**
	 * @Title getProjectRedisKey
	 * @Description 获取项目缓存前缀
	 * @return
	 * @AuthorOriginally DSY
	 * @date 2022年11月21日 下午9:52:20
	 */
	public String getProjectRedisKey() {
		if (!StringUtils.isEmpty(appName)) {
			return getCachePrefix()+":project";
		}
		return null;
	}
}
